home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj8409.arc / STRINSER.ASM < prev    next >
Assembly Source File  |  1986-09-14  |  1KB  |  48 lines

  1. ; ROUTINE TO INSERT ONE STRING WITHIN ANOTHER
  2. ;
  3. ;addressing equates
  4. essorc    equ    es:[si]        ; equate for source in extra seg
  5. dsdest    equ    byte ptr[di]    ; equate for usual destination
  6.  
  7. strinsert    proc    far
  8. ;
  9.     push    si        ; save registers
  10.     push    di
  11.     push    cx
  12.     push    ax
  13. ;
  14. ; find current end of destination string
  15.     mov    si,bp        ; start of string
  16.     add    si,es:[si]    ; point to next to last byte
  17.     inc    si        ; adjust for length information
  18. ;
  19. ; find new end of destination string and update length
  20.     mov    di,si        ; get old end of destination
  21.     mov    ax,[bx]        ; get length of source
  22.     add    di,ax        ; new end of destination
  23.     add    es:[bp],ax    ; new length of destination
  24. ;
  25. ; move tail of destination string out of the way
  26.     mov    cx,si        ; SI - DX + 1 is the count
  27.     sub    cx,dx
  28.     inc    cx
  29.     std            ; backward direction
  30. rep    movs    dsdest,essorc    ; move the tail
  31. ;
  32. ; move source string into place
  33.     mov    di,dx        ; destination of move
  34.     mov    si,bx        ; source of move
  35.     cld            ; forward direction
  36.     lodsw            ; length of source
  37.     mov    cx,ax        ; the count
  38.     rep    movsb        ; make the string move
  39. ;
  40. strinsertexit:
  41.     pop    ax        ; restore registers
  42.     pop    cx
  43.     pop    di
  44.     pop    si
  45.     ret
  46. ;
  47. strinsert    endp
  48.